package com.gxa.mapper;

import com.gxa.pojo.Patient;

import java.util.List;

public interface PatientMapper {


    /**
     * 增加
     * @param patient 患者
     * @return  返回受影响行数
     */
    Integer insert(Patient patient);

    /**
     * 通过id查找
     * @param id 患者id
     * @return  返回患者信息
     */
    Patient findById(Integer id);

    /**
     * 通过电话查找患者
     * @param phone 患者电话
     * @return  返回患者个人信息
     */
    Patient findByPhone(String phone);

    /**
     * 通过用户名查找患者
     * @param username 患者用户名
     * @return  返回患者个人信息
     */
    Patient findByUserName(String username);

    /**
     * 通过用户名和密码查找id
     * @param username  用户名
     * @param password  密码
     * @return  返回个人信息
     */
    Patient findByUserNameAndPassword(String username, String password);

    /**
     * 根据地区统计人数
     * @param address 患者地址
     * @return  该地址共有多少患者
     */
    Integer findByAddress(String address);

    /**
     * 通过医生id查找医生关注的患者
     * @param doctorId  医生id
     * @return  返回医生关注的患者
     */
    List<Patient> findByDoctorId(Integer doctorId);

    /**
     * 查询所有患者
     * @return  返回所有患者信息
     */
    List<Patient> findAll();

    /**
     * 分页查询
     * @param startIndex 开始序号
     * @param pageSize  分页大小
     * @return  返回分页查询结果
     */
    List<Patient> findByPage(Integer startIndex,Integer pageSize);


    /**
     * 修改患者信息
     * @param patient  患者信息
     * @return  修改信息影响的行数
     */
    Integer update(Patient patient);

    /**
     * 删除
     * @param id 患者id
     * @return  返回受影响行数
     */
    int deleteById(Integer id);

    /**
     * 增加账户余额
     * @param acount 核桃币数额
     * @return  返回影响行数
     */
    Integer addAcount(Integer acount,Integer id);

    /**
     * 扣除账户核桃币
     * @param acount  核桃币数额
     * @return  返回影响行数
     */
    Integer deductAcount(Integer acount,Integer id);

}